package com.ksm.domain.entity;

import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = "T_FRAIS")
public class Frais extends GenericEntity {

	private Date date;
	private TypeFrais type;
	private String fournisseur;
	private String commentaire;
	private Double montant;
	private Exercice exercice;
	private String justificatif;

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.slim.fm.server.domain.entity.Frais#getDate()
	 */
	public Date getDate() {
		return date;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.slim.fm.server.domain.entity.Frais#setDate(java.util.Date)
	 */
	public void setDate(Date date) {
		this.date = date;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.slim.fm.server.domain.entity.Frais#getType()
	 */
	@Enumerated(EnumType.STRING)
	public TypeFrais getType() {
		return type;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.slim.fm.server.domain.entity.Frais#setType(com.slim.fm.server.domain
	 * .entity.FraisImpl.TypeFrais)
	 */
	public void setType(TypeFrais type) {
		this.type = type;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.slim.fm.server.domain.entity.Frais#getFournisseur()
	 */
	public String getFournisseur() {
		return fournisseur;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.slim.fm.server.domain.entity.Frais#setFournisseur(java.lang.String)
	 */
	public void setFournisseur(String fournisseur) {
		this.fournisseur = fournisseur;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.slim.fm.server.domain.entity.Frais#getCommentaire()
	 */
	public String getCommentaire() {
		return commentaire;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.slim.fm.server.domain.entity.Frais#setCommentaire(java.lang.String)
	 */
	public void setCommentaire(String commentaire) {
		this.commentaire = commentaire;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.slim.fm.server.domain.entity.Frais#getMontant()
	 */
	public Double getMontant() {
		return montant;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.slim.fm.server.domain.entity.Frais#setMontant(java.lang.Double)
	 */
	public void setMontant(Double montant) {
		this.montant = montant;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.slim.fm.server.domain.entity.Frais#getJustificatif()
	 */
	public String getJustificatif() {
		return justificatif;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.slim.fm.server.domain.entity.Frais#setJustificatif(java.lang.String)
	 */
	public void setJustificatif(String justificatif) {
		this.justificatif = justificatif;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.slim.fm.server.domain.entity.Frais#getExercice()
	 */
	@ManyToOne(cascade = CascadeType.ALL)
	public Exercice getExercice() {
		return exercice;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.slim.fm.server.domain.entity.Frais#setExercice(com.slim.fm.server
	 * .domain.entity.Exercice)
	 */
	public void setExercice(Exercice exercice) {
		this.exercice = exercice;
	}

	public enum TypeFrais {
		TRANSPORT, REPAS, LOYER;

		public static TypeFrais getTypeFrais(String value) {
			for (TypeFrais typeFrais : TypeFrais.values()) {
				if (typeFrais.name().equals(value)) {
					return typeFrais;
				}
			}
			return null;
		}
	}

	@Override
	public String toString() {
		return "Frais [commentaire=" + commentaire + ", date=" + date + ", exercice=" + exercice + ", fournisseur=" + fournisseur + ", justificatif="
				+ justificatif + ", montant=" + montant + ", type=" + type + "]";
	}

	
	
}
